1. Technical Field
This invention generally relates to systems modeling and development, and more specifically relates to hardware simulators and emulators.
2. Background Art
Today, our society is heavily dependant upon computers for everyday activity. Computers are found in our homes, in business offices, and in most production and manufacturing environments. Along with general purpose applications, computers also form the basis for many special purpose systems such as inventory systems used in grocery stores, control systems for aircraft, and a host of other specific functions. Most computer systems are controlled by a microprocessor or central processing unit (CPU) and have multiple peripheral devices which work in concert to perform the various functions for which the computer system has been designed.
Today's microprocessor-based systems are a highly complex combination of hardware and software. Even the most basic computer systems contain multiple circuits and control systems that must function within very specific constraints in order for the computer system to operate as designed. In addition, many of the hardware and software technologies associated with microprocessor-based systems are constantly changing in response to advancing technology and increased consumer demand.
As technology continues to progress, new systems and new components for existing microprocessor-based systems are constantly being developed. Systems and components that existed only as designs a few short years ago have already entered production, been marketed, and are becoming obsolete today. In order to be competitive in this rapidly evolving environment, it is necessary for technology-based companies to quickly and efficiently design new systems and components that take advantage of the latest technological advances.
When designing a new system or component, it is often necessary to determine how the new system or component will interact with and respond to existing systems or components. Without a thorough understanding of the performance characteristics and operational parameters associated with a new component or system, significant problems may surface once manufacturing and distribution begin. While a proposed system or component could actually be manufactured in limited numbers for testing and evaluation purposes, it is usually more convenient, less time-consuming, less costly, and more efficient to create a model or functional prototype of the proposed system. This modeling is typically accomplished by using simulation systems that model hardware function and performance in software, hardware-assisted software simulation systems, or hardware emulation systems that use a combination of software and hardware to model a circuit or system design.
While often successful, current methods and systems for performing simulation and emulation are somewhat limited in scope and application. The existing limits are a combination of operational design and implementation restrictions which increase development costs and constrain rapid development of new systems. These limitations can be better explained in conjunction with FIGS. 1-3 which illustrate a range of modeling options progressing from a pure software-based simulation environment (FIG. 1) to a hardware-assisted emulation environment (FIG. 3).
Referring now to FIG. 1, a typical simulation environment 100 includes a workstation 110 executing a concurrent operations model 120 and a sequential operations model 130. In addition, communication link 125 provides an intercommunication link between concurrent operations model 120 and sequential operations model 130. Communication link 125 is usually implemented with memory components (not shown) located within workstation 110. Software-based simulation systems typically have the ability to create models that can represent either concurrent or sequential operations. Concurrent modeling refers to a description of operational behavior which is designed to represent actual hardware logic components, where many events occur in parallel or at the same time. Each of these events will typically represent the transfer of information from one internal system register or memory location to another. Sequential modeling, on the other hand, is used to simulate operations or events which happen only one at a time in a serial fashion. The flow of events progresses from one to another in a sequence or series of steps.
Workstation 110 may be any type of microprocessor-based computer or computer system known to those skilled in the art. In addition to the standard operating system overhead associated with workstation 110, workstation 110 is also processing concurrent operations model 120 and sequential operations model 130. Since workstation 110 is a general purpose computer, it has additional tasks to perform and a certain amount of operational overhead which consumes a portion of the processing capability of workstation 110. As noted in FIG. 1, in typical simulation environment 100, concurrent operations model 120 may account for approximately 90% of the available operational load of workstation 110 while sequential operations model 130 accounts for the remaining 10%.
Referring now to FIG. 2, simulation environment 100 of FIG. 1 has been modified to create a simulation environment 200. Simulation environment 200 includes workstation 110, concurrent operations model 120, sequential operations model 130, a communication link 210, and an accelerator 220. In simulation environment 200, concurrent operations model 120 has been removed from the control and operation of workstation 110. Concurrent operations model 120 is now implemented in accelerator 220. Accelerator 220 is generally a hardware solution, such as Field Programmable Gate Arrays (FPGAs) or other specifically designed custom accelerator hardware that may be dynamically configured to implement concurrent operations model 120. Communication link 210 is a bus or network connection used to transmit test vectors and other operational data between workstation 110 and concurrent operations model 120. The overhead associated with communication link 210 can, in some cases, cause delays and degrade the overall performance of simulation environment 200.
By moving concurrent operations model 120 outside of workstation 110, sequential operations model 130, which used to take only 10% of the execution time, now becomes the limiting factor and consumes 90% of the execution time of the simulation. Thus we see that moving concurrent operations model 120 outside of workstation 110 (FIG. 2) results in a performance increase that is an order of magnitude greater than the performance of system 100 shown in FIG. 1. While simulation environment 200 is considerably more efficient and performs a given simulation more quickly than simulation environment 100, simulation environment 200 is still somewhat limited by the high utilization rate of communication link 210 and the overhead of working with sequential operations model 130 on workstation 110.
Referring now to FIG. 3, simulation environment 200 of FIG. 2 has been modified to create an emulation environment 300. In addition to workstation 110, concurrent operations model 120, sequential operations model 130, and communication link 210, emulation environment 300 includes: emulator/accelerator 310; a high speed/high bandwidth communication link 320; a target hardware system 330; and an optional feed-back link 340.
Emulator/accelerator 310 is a large-scale hardware configuration implemented with Field Programmable Gate Arrays (FPGAs) or some other type of custom hardware. This system is capable of emulating many different types of computer system hardware components including, for example, memory devices. An example of emulator/accelerator 310 is IBM's ET3. Emulator/accelerator 310 is capable of modeling concurrent operations such as concurrent operations model 120. Since emulator/accelerator 310 is designed to operate under the control of workstation 110, sequential operations model 130 and concurrent operations model 120 may operate in parallel. Note, however, that sequential operations model 130 takes much more execution time than concurrent operations model 120 because of the operational overhead associated with workstation 110 and communication link 210. The overall performance of system 300 is still limited by the speed of executing sequential operations model 130 on workstation 110. While some degree of parallel operation of concurrent operations model 120 and sequential operations model 130 may occur, in a practical sense concurrent operations model 120 will spend most of its time waiting for sequential operations model 130 to finish processing or for data to be delivered over communication link 210.
Target hardware system 330 may be a part of a system under test and can represent any system or portion of a system that needs to be tested. One example of target hardware system 330 is a personal computer with the microprocessor removed. A prototype microprocessor may be modeled using emulator 310 and attached to target hardware system 330 via communication link 320. In this case, communication link 320 would consist of several interface cables and adapter pods. The system will then be exercised and tested for compliance with design parameters and specifications. Target hardware system 330 includes any hardware that needs to be tested, whether the hardware is a portion of an integrated circuit, an entire integrated circuit, or multiple integrated circuits.
Workstation 110 typically provides test data (such as test vectors) to emulator/accelerator 310 or target hardware system 330, which then performs the desired tests. Results of the test may be returned to workstation 110 via optional feedback link 340 or may be passed via communication link 320 to emulator/accelerator 310 and then to workstation 110 via communication link 210.
Given the limitations associated with existing systems as described above, there is a need to provide a system whereby simulation and emulation can be accomplished without the limitations of existing systems. This system should allow for simulation and emulation to take place at greater speeds and with increased flexibility. In addition, it is desirable to provide a system which is compatible with existing emulation and simulation environments.